package com.woniuxy.yoga.course.service.service;

import com.woniuxy.yoga.commons.core.model.PageInfo;
import com.woniuxy.yoga.course.dao.model.TeamCourse;
import com.baomidou.mybatisplus.extension.service.IService;
import com.woniuxy.yoga.course.model.dto.team.TeamCourseDTO;
import com.woniuxy.yoga.course.model.param.team.AddTeamCourseParam;
import com.woniuxy.yoga.course.model.param.team.AmountTeamCourseDurationParam;
import com.woniuxy.yoga.course.model.param.team.CoachViewTeamCourseParam;
import com.woniuxy.yoga.course.model.param.team.QueryAllTeamCourseParam;

import java.util.List;

/**
 * <p>
 * 团课课程表 服务类
 * </p>
 *
 * @author 韦用文,刘存益,郎腾霄
 * @since 2023年11月28日
 */
public interface TeamCourseService extends IService<TeamCourse> {

    /**
     * 教练ID查询团队课程
     * @param ids
     * @return
     */
    List<TeamCourseDTO> getByCoachId(List<Integer> ids);

    /**
     * 新增团队课程
     * @param param
     */
    void addTeamCourse(AddTeamCourseParam param);

    /**
     * 修改成进行中
     * @param teamCourseId
     */
    void modifyTeamCourseHave(Integer teamCourseId);

    /**
     * 修改成已完成(需要将该团队课程对应的团队产品总天数减一,到零的时候将团队产品状态该为已完成)
     * @param teamCourseId
     */
    void modifyTeamCourseComplete(Integer teamCourseId);

    /**
     * 查询所有的课程信息
     * @param param
     * @return
     */
    PageInfo queryAllTeamCourse(QueryAllTeamCourseParam param);

    /**
     * 统计该时间段的团队课程已完成的总时长
     * @param param
     * @return
     */
    Integer amountTeamCourseDuration(AmountTeamCourseDurationParam param);

    /**
     * 教练查询自己的团队课程
     * @param param
     * @return
     */
    PageInfo coachViewTeamCourse(CoachViewTeamCourseParam param);
}
